{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       "@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
       "@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
       "@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
       "@import url('http://fonts.googleapis.com/css?family=Fira_sans');\n",
       "\n",
       "    div.cell{\n",
       "        width: 900px;\n",
       "        margin-left: 0% !important;\n",
       "        margin-right: auto;\n",
       "    }\n",
       "    div.text_cell code {\n",
       "        background: transparent;\n",
       "        color: #000000;\n",
       "        font-weight: 600;\n",
       "        font-size: 11pt;\n",
       "        font-style: bold;\n",
       "        font-family:  'Source Code Pro', Consolas, monocco, monospace;\n",
       "   }\n",
       "    h1 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "\t}\n",
       "\t\n",
       "    div.input_area {\n",
       "        background: #F6F6F9;\n",
       "        border: 1px solid #586e75;\n",
       "    }\n",
       "\n",
       "    .text_cell_render h1 {\n",
       "        font-weight: 200;\n",
       "        font-size: 30pt;\n",
       "        line-height: 100%;\n",
       "        color:#c76c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 1em;\n",
       "        display: block;\n",
       "        white-space: wrap;\n",
       "        text-align: left;\n",
       "    } \n",
       "    h2 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "        text-align: left;\n",
       "    }\n",
       "    .text_cell_render h2 {\n",
       "        font-weight: 200;\n",
       "        font-size: 16pt;\n",
       "        font-style: italic;\n",
       "        line-height: 100%;\n",
       "        color:#c76c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 1.5em;\n",
       "        display: block;\n",
       "        white-space: wrap;\n",
       "        text-align: left;\n",
       "    } \n",
       "    h3 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "    }\n",
       "    .text_cell_render h3 {\n",
       "        font-weight: 200;\n",
       "        font-size: 14pt;\n",
       "        line-height: 100%;\n",
       "        color:#d77c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 2em;\n",
       "        display: block;\n",
       "        white-space: wrap;\n",
       "        text-align: left;\n",
       "    }\n",
       "    h4 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "    }\n",
       "    .text_cell_render h4 {\n",
       "        font-weight: 100;\n",
       "        font-size: 14pt;\n",
       "        color:#d77c0c;\n",
       "        margin-bottom: 0.5em;\n",
       "        margin-top: 0.5em;\n",
       "        display: block;\n",
       "        white-space: nowrap;\n",
       "    }\n",
       "    h5 {\n",
       "        font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "    }\n",
       "    .text_cell_render h5 {\n",
       "        font-weight: 200;\n",
       "        font-style: normal;\n",
       "        color: #1d3b84;\n",
       "        font-size: 16pt;\n",
       "        margin-bottom: 0em;\n",
       "        margin-top: 0.5em;\n",
       "        display: block;\n",
       "        white-space: nowrap;\n",
       "    }\n",
       "    div.text_cell_render{\n",
       "        font-family: 'Fira sans', verdana,arial,sans-serif;\n",
       "        line-height: 125%;\n",
       "        font-size: 115%;\n",
       "        text-align:justify;\n",
       "        text-justify:inter-word;\n",
       "    }\n",
       "    div.output_subarea.output_text.output_pyout {\n",
       "        overflow-x: auto;\n",
       "        overflow-y: scroll;\n",
       "        max-height: 50000px;\n",
       "    }\n",
       "    div.output_subarea.output_stream.output_stdout.output_text {\n",
       "        overflow-x: auto;\n",
       "        overflow-y: scroll;\n",
       "        max-height: 50000px;\n",
       "    }\n",
       "    div.output_wrapper{\n",
       "        margin-top:0.2em;\n",
       "        margin-bottom:0.2em;\n",
       "}\n",
       "\n",
       "    code{\n",
       "      font-size: 70%;\n",
       "    }\n",
       "    .rendered_html code{\n",
       "    background-color: transparent;\n",
       "    }\n",
       "    ul{\n",
       "        margin: 2em;\n",
       "    }\n",
       "    ul li{\n",
       "        padding-left: 0.5em; \n",
       "        margin-bottom: 0.5em; \n",
       "        margin-top: 0.5em; \n",
       "    }\n",
       "    ul li li{\n",
       "        padding-left: 0.2em; \n",
       "        margin-bottom: 0.2em; \n",
       "        margin-top: 0.2em; \n",
       "    }\n",
       "    ol{\n",
       "        margin: 2em;\n",
       "    }\n",
       "    ol li{\n",
       "        padding-left: 0.5em; \n",
       "        margin-bottom: 0.5em; \n",
       "        margin-top: 0.5em; \n",
       "    }\n",
       "    ul li{\n",
       "        padding-left: 0.5em; \n",
       "        margin-bottom: 0.5em; \n",
       "        margin-top: 0.2em; \n",
       "    }\n",
       "    a:link{\n",
       "       font-weight: bold;\n",
       "       color:#447adb;\n",
       "    }\n",
       "    a:visited{\n",
       "       font-weight: bold;\n",
       "       color: #1d3b84;\n",
       "    }\n",
       "    a:hover{\n",
       "       font-weight: bold;\n",
       "       color: #1d3b84;\n",
       "    }\n",
       "    a:focus{\n",
       "       font-weight: bold;\n",
       "       color:#447adb;\n",
       "    }\n",
       "    a:active{\n",
       "       font-weight: bold;\n",
       "       color:#447adb;\n",
       "    }\n",
       "    .rendered_html :link {\n",
       "       text-decoration: underline; \n",
       "    }\n",
       "    .rendered_html :hover {\n",
       "       text-decoration: none; \n",
       "    }\n",
       "    .rendered_html :visited {\n",
       "      text-decoration: none;\n",
       "    }\n",
       "    .rendered_html :focus {\n",
       "      text-decoration: none;\n",
       "    }\n",
       "    .rendered_html :active {\n",
       "      text-decoration: none;\n",
       "    }\n",
       "    .warning{\n",
       "        color: rgb( 240, 20, 20 )\n",
       "    } \n",
       "    hr {\n",
       "      color: #f3f3f3;\n",
       "      background-color: #f3f3f3;\n",
       "      height: 1px;\n",
       "    }\n",
       "    blockquote{\n",
       "      display:block;\n",
       "      background: #fcfcfc;\n",
       "      border-left: 5px solid #c76c0c;\n",
       "      font-family: 'Open sans',verdana,arial,sans-serif;\n",
       "      width:680px;\n",
       "      padding: 10px 10px 10px 10px;\n",
       "      text-align:justify;\n",
       "      text-justify:inter-word;\n",
       "      }\n",
       "      blockquote p {\n",
       "        margin-bottom: 0;\n",
       "        line-height: 125%;\n",
       "        font-size: 100%;\n",
       "      }\n",
       "</style>\n",
       "<script>\n",
       "    MathJax.Hub.Config({\n",
       "                        TeX: {\n",
       "                           extensions: [\"AMSmath.js\"]\n",
       "                           },\n",
       "                tex2jax: {\n",
       "                    inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
       "                    displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
       "                },\n",
       "                displayAlign: 'center', // Change this to 'center' to center equations.\n",
       "                \"HTML-CSS\": {\n",
       "                    scale:100,\n",
       "                        availableFonts: [],\n",
       "                        preferredFont:null,\n",
       "                        webFont: \"TeX\",\n",
       "                    styles: {'.MathJax_Display': {\"margin\": 4}}\n",
       "                }\n",
       "        });\n",
       "</script>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# format the book\n",
    "%matplotlib inline\n",
    "import sys\n",
    "from __future__ import division, print_function\n",
    "import sys\n",
    "sys.path.insert(0,'../code')\n",
    "import book_format\n",
    "book_format.load_style('../code')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Decision Analysis\n",
    "\n",
    "## The *Price is Right* problem\n",
    "\n",
    "On November 1, 2007, contestants named Letia and Nathaniel appeared on\n",
    "*The Price is Right*, an American game show. They competed\n",
    "in a game called *The Showcase*, where the objective is to\n",
    "guess the price of a showcase of prizes. The contestant who comes\n",
    "closest to the actual price of the showcase, without going over, wins\n",
    "the prizes.\n",
    "\n",
    "Nathaniel went first. His showcase included a dishwasher, a wine\n",
    "cabinet, a laptop computer, and a car. He bid \\$26,000.\n",
    "\n",
    "Letia’s showcase included a pinball machine, a video arcade game, a pool\n",
    "table, and a cruise of the Bahamas. She bid \\$21,500.\n",
    "\n",
    "The actual price of Nathaniel’s showcase was \\$25,347. His bid was too\n",
    "high, so he lost.\n",
    "\n",
    "The actual price of Letia’s showcase was \\$21,578. She was only off by\n",
    "\\$78, so she won her showcase and, because her bid was off by less than\n",
    "\\$250, she also won Nathaniel’s showcase.\n",
    "\n",
    "For a Bayesian thinker, this scenario suggests several questions:\n",
    "\n",
    "1.  Before seeing the prizes, what prior beliefs should the contestant\n",
    "    have about the price of the showcase?\n",
    "\n",
    "2.  After seeing the prizes, how should the contestant update those\n",
    "    beliefs?\n",
    "\n",
    "3.  Based on the posterior distribution, what should the contestant bid?\n",
    "\n",
    "The third question demonstrates a common use of Bayesian analysis:\n",
    "decision analysis. Given a posterior distribution, we can choose the bid\n",
    "that maximizes the contestant’s expected return.\n",
    "\n",
    "This problem is inspired by an example in Cameron Davidson-Pilon’s book,\n",
    "*Bayesian Methods for Hackers*. The code I wrote for this\n",
    "chapter is available from <http://thinkbayes.com/price.py>; it reads\n",
    "data files you can download from\n",
    "<http://thinkbayes.com/showcases.2011.csv> and\n",
    "<http://thinkbayes.com/showcases.2012.csv>. For more information see\n",
    "Section [download]."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The prior\n",
    "\n",
    "To choose a prior distribution of prices, we can take advantage of data\n",
    "from previous episodes. Fortunately, fans of the show keep detailed\n",
    "records. When I corresponded with Mr. Davidson-Pilon about his book, he\n",
    "sent me data collected by Steve Gee at <http://tpirsummaries.8m.com>. It\n",
    "includes the price of each showcase from the 2011 and 2012 seasons and\n",
    "the bids offered by the contestants."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n87F+/XpkZWVh48aNePfdd1FUVITo6GisXr0ahw4dwrZt2wAAra2tSE5OxsyZM7FmzRqcOHECDz/8\nMJ5//nmsWLECgFQmMyMjA4888ggWLVqEvXv3YunSpfj444/xs5/97PJuNSGEEEIIIUNUj3Lw77nn\nHjQ1NWHdunWora1Feno6vv32W7kGvsFgQGlpqdzez88P2dnZeOKJJzBp0iQEBgZi1apVcnAPAHFx\ncdiyZQtWrlyJv//974iMjMRf//pXCu4JIYQQQgi5BD06gk8IIYQQQggZHAbFXQM2bNiAhIQEaLVa\nTJw4EXv37vV0lzxmz549uO222xAdHQ2e5/H+++93a/Pcc88hKioK3t7emDVrFoqKityWOxwOPPnk\nkwgNDYVOp8Ntt92G6upqtzYtLS148MEHERAQgICAAMyfP7/b1eqVlZWYN28edDodQkNDsXz5crhc\n575x1UD20ksv4aqrroK/vz/CwsJw6623orCwsFs7Gtfe27BhA8aOHQt/f3/4+/tj2rRp2LJli1sb\nGtdL89JLL4HneSxbtsxtPo1r7z3//PPged7tERkZ6daGxrVvDAYDFixYgLCwMGi1WqSnp2PPnj1u\nbWhseyc+Pr7b55XnecybN09uQ2Pae6IoYu3atXLcmZCQgLVr18r3X+g04MeWDXAff/wxU6lU7O23\n32bHjx9nTz75JNPpdKyystLTXfOILVu2sDVr1rB///vfzMfHh23atMlt+R/+8Afm5+fHPv/8c1ZY\nWMjuueceFhkZydra2uQ2ixcvZlFRUWz79u0sLy+PzZw5k40bN46Joii3ueGGG1h6ejo7ePAgy8nJ\nYWlpaezWW2+VlwuCwNLT09msWbNYfn4+27ZtG4uMjGTLli27/IPQz2644Qa2adMmVlhYyI4dO8Zu\nv/12ptfrWXNzs9yGxrVvvvzyS/bdd9+xM2fOsFOnTrE1a9YwlUrFCgoKGGM0rpfqwIEDLD4+no0b\nN449+eST8nwa17557rnnWEpKCqurq2NGo5EZjUbW0NAgL6dx7ZuWlhaWkJDAFixYwA4fPszKysrY\njh072PHjx+U2NLa919DQIH9OjUYjy8vLYzzPsw8++IAxRmPaV+vWrWPBwcHsm2++YeXl5eyrr75i\nQUFB7MUXX5TbDIaxHfAB/uTJk9miRYvc5iUlJbFf//rXHurRwKHT6boF+BEREeyll16Sp61WK/P1\n9WVvvvkmY4wxk8nE1Go1++ijj+Q2lZWVjOd5tnXrVsYYY0VFRYzjOHbgwAG5zd69exnHcezkyZOM\nMWlHQ6FQsOrqarnNhx9+yLRaLTObzf2/sVdQW1sbUygU7Ouvv5bn0bj2n6CgIHncaFz7rqWlhSUm\nJrJdu3axmTNnugX4NK5989xzz7GMjIzzLqdx7ZvVq1ez6dOnX7ANje2le/HFF1lgYCCz2WyMMRrT\nvrrlllvYggUL3OY99NBDbN68efL0YBjbAZ2i43Q6kZub2+2Ot3PmzMH+/fs91KuBq7S0tNsdgjUa\nDWbMmCGP1+HDh+FyudzaREdHIyUlRW6Tk5MDX19fTJkyRW6TlZUFHx8ftzYpKSlup6/nzp0Lm82G\n3Nzcy7qdl1traytEUURgYCAAGtf+IooiPv74Y7S3tyMrK4vG9RI99thjuOeee3DNNde4zadxvTQl\nJSWIiopCQkIC7rvvPrmABI1r333xxReYPHky7r33XoSHh2P8+PFYv369vJzGtn+88847ePDBB+Hl\n5UVjegmmT5+OnTt34sSJEwCAoqIi7NixAzfffDOAwfN5HdB3sm1oaIAgCAgPD3ebHx4eju3bt3uo\nVwOXwWAAx3HnHK+amhoA0s3EFAoFgoODu7UxGAzy+4SGhnZ7/7CwMLc2P/07nTdF62wzWC1fvhwT\nJkzA1KlTAdC4Xqpjx45h6tSpsNls8PX1xeeff47U1FQcOHCAxrWP3nrrLZSUlOCjjz7qtow+r303\nZcoUvPfee0hOTkZdXR1eeOEFZGVlobCwkMb1EpSUlGDDhg1YuXIlVq9ejfz8fCxduhQcx2HJkiU0\ntv1g69atKCsrw6OPPgqAvgcuxTPPPAOz2YzU1FQoFAoIgoA1a9Zg0aJFAAbP2A7oAJ+QK+2pp57C\n/v37sW/fPnAc5+nuDAnJyck4cuQITCYTPv30U8yfPx+7d+/2dLcGrZMnT2LNmjXYt28feH5An4Qd\ndObOnes2PWXKFMTHx2PTpk2YPHmyh3o1+ImiiKuuugrr1q0DAIwdOxYnT57E+vXrsWTJEg/3bmh4\n6623MGnSJKSnp3u6K4Pexx9/jA8++AAff/wxUlNTkZ+fj2XLliE+Ph4PP/ywp7vXYwP616FzL8Vo\nNLrNNxqN0Ov1HurVwKXX68EYu+B46fV6CIKAxsbGC7apr6/v9v51dXVubX76dzrPuAzW/zcrV67E\n5s2bsXPnTvmOywCN66VSKpVISEjA+PHjsW7dOowbNw6vvfYajWsfHThwAI2NjUhNTYVKpYJKpcLu\n3buxfv16qNVqBAcH07j2E29vb6SlpeHUqVP0eb0EERERSElJcZuXkpKCiooKAPQde6nq6+vx5Zdf\n4rHHHpPn0Zj23a9+9SusWrUKd999N9LS0vDAAw/gqaeewksvvQRg8IztgA7wVSoVMjMzkZ2d7TY/\nOzsbWVlZHurVwBUfHw+9Xu82XjabDXv27JHHKzMzE0ql0q1NVVUViouL5TZTp05FW1sbcnJy5Db7\n9++HxWLBtGnT5DbFxcXy6ShAOkWo0WiQmZl5Wbfzcli+fLkc3CclJbkto3HtX6Iowm6307j20e23\n346CggIcOXJEfkycOBH33Xcfjhw5glGjRtG49hObzYbjx48jMjKSPq+XICsrS85n7nTixAn5QAqN\n7aV59913odFocO+998rzaEz7zmKxdDs7yvO8XCZz0IxtT68q9pTNmzczLy8v9s9//pMVFxezZcuW\nMV9fX1ZRUeHprnlEW1sby8/PZ3l5eczb25u98MILLD8/Xx6Pl19+mQUEBLDPPvuMFRQUsJ///Ocs\nKirKrXTT448/zmJiYti2bdvYjz/+yGbNmsUmTJjgVrrpxhtvZGPGjGEHDhxg+/fvZxkZGey2226T\nlwuCwMaMGcOuu+46lpeXx7Kzs1lUVBRbvnz5lRuMfrJkyRLm5+fHdu7cyQwGg/w4e8xoXPvm2Wef\nZXv27GFlZWWsoKCAPfvss0yhULDvv/+eMUbj2l9+WkWHxrVvfvnLX7Ldu3ez0tJSlpOTw26++Wbm\n7+9P36+X6NChQ0ytVrN169ax06dPs08++YT5+/uzjRs3ym1obPtu1KhR3aoNMkZj2lcLFixgMTEx\n7JtvvmFlZWXss88+Y6GhoWzVqlVym8EwtgM+wGeMsY0bN7L4+Him0WjYxIkT2d69ez3dJY/ZtWsX\n4ziO8Tzv9nj44YflNs8//zyLjIxkWq2WzZw5kxUWFrq9h8PhYMuWLWMhISHMx8eH3Xbbbayqqsqt\nTUtLC3vwwQeZv78/8/f3Z/Pnz2cmk8mtTWVlJZs3bx7z8fFhISEhbMWKFczhcFy+jb9MzjWePM+z\n559/3q0djWvvLViwgMXFxTGNRsPCw8PZ7NmzWXZ2tlsbGtdLN2vWLLcAnzEa17649957WVRUFPPy\n8mLR0dHsrrvuYsXFxW5taFz7ZsuWLWzs2LFMq9Wy0aNHs7/97W/d2tDY9t7OnTsZz/Ps8OHD51xO\nY9p7bW1tbOXKlSwuLo55e3uzxMRE9pvf/IbZ7Xa3dgN9bDnGGOvDGQxCCCGEEELIADSgc/AJIYQQ\nQgghvUMBPiGEEEIIIUMIBfiEEEIIIYQMIRTgE0IIIYQQMoRQgE8IIYQQQsgQQgE+IYQQQgghQwgF\n+IQQQgghhAwhFOATQgghhBAyhFCATwghhBBCyBDy/wFeCY7fzdUj4QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x18db70e50b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from price import *\n",
    "import matplotlib.pyplot as plt\n",
    "player1, player2 = MakePlayers(path='../code')\n",
    "MakePrice1(player1, player2)\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This shows the distribution of prices for these\n",
    "showcases. The most common value for both showcases is around \\$28,000,\n",
    "but the first showcase has a second mode near \\$50,000, and the second\n",
    "showcase is occasionally worth more than \\$70,000.\n",
    "\n",
    "These distributions are based on actual data, but they have been\n",
    "smoothed by Gaussian kernel density estimation (KDE). Before we go on, I\n",
    "want to take a detour to talk about probability density functions and\n",
    "KDE."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Probability density functions\n",
    "\n",
    "So far we have been working with probability mass functions, or PMFs. A\n",
    "PMF is a map from each possible value to its probability. In my\n",
    "implementation, a Pmf object provides a method named Prob\n",
    "that takes a value and returns a probability, also known as a\n",
    "**probability mass**.\n",
    "\n",
    "A **probability density function**, or PDF, is the\n",
    "continuous version of a PMF, where the possible values make up a\n",
    "continuous range rather than a discrete set.\n",
    "\n",
    "In mathematical notation, PDFs are usually written as functions; for\n",
    "example, here is the PDF of a Gaussian distribution with mean 0 and\n",
    "standard deviation 1: \n",
    "\n",
    "$$f(x) = \\frac{1}{\\sqrt{2 \\pi}} \\exp(-x^2/2)$$\n",
    "\n",
    "For a given value of $x$, this function computes a probability density. A\n",
    "density is similar to a probability mass in the sense that a higher\n",
    "density indicates that a value is more likely.\n",
    "\n",
    "But a density is not a probability. A density can be 0 or any positive\n",
    "value; it is not bounded, like a probability, between 0 and 1.\n",
    "\n",
    "If you integrate a density over a continuous range, the result is a\n",
    "probability. But for the applications in this book we seldom have to do\n",
    "that.\n",
    "\n",
    "Instead we primarily use probability densities as part of a likelihood\n",
    "function. We will see an example soon."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Representing PDFs\n",
    "\n",
    "To represent PDFs in Python, `thinkbayes.py` provides a class\n",
    "named `Pdf`. `Pdf` is an **abstract type**, which means that it defines the interface a Pdf is\n",
    "supposed to have, but does not provide a complete implementation. The\n",
    "`Pdf` interface includes two methods, `Density`\n",
    "and `MakePmf`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class Pdf(object):\n",
    "\n",
    "    def Density(self, x):\n",
    "        raise UnimplementedMethodException()\n",
    "\n",
    "    def MakePmf(self, xs):\n",
    "        pmf = Pmf()\n",
    "        for x in xs:\n",
    "            pmf.Set(x, self.Density(x))\n",
    "        pmf.Normalize()\n",
    "        return pmf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`Density` takes a value, `x`, and returns the\n",
    "corresponding density. `MakePmf` makes a discrete\n",
    "approximation to the PDF.\n",
    "\n",
    "`Pdf` provides an implementation of `MakePmf`, but\n",
    "not `Density`, which has to be provided by a child class.\n",
    "\n",
    "A **concrete type** is a child class that extends an\n",
    "abstract type and provides an implementation of the missing methods. For\n",
    "example, `GaussianPdf` extends `Pdf` and provides\n",
    "`Density`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class GaussianPdf(Pdf):\n",
    "\n",
    "    def __init__(self, mu, sigma):\n",
    "        self.mu = mu\n",
    "        self.sigma = sigma\n",
    "\n",
    "    def Density(self, x):\n",
    "        return scipy.stats.norm.pdf(x, self.mu, self.sigma)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`__init__` takes `mu` and `sigma`, which are the\n",
    "mean and standard deviation of the distribution, and stores them as\n",
    "attributes.\n",
    "\n",
    "`Density` uses a function from `scipy.stats` to\n",
    "evaluate the Gaussian PDF. The function is called `norm.pdf`\n",
    "because the Gaussian distribution is also called the “normal”\n",
    "distribution.\n",
    "\n",
    "The Gaussian PDF is defined by a simple mathematical function, so it is\n",
    "easy to evaluate. And it is useful because many quantities in the real\n",
    "world have distributions that are approximately Gaussian.\n",
    "\n",
    "But with real data, there is no guarantee that the distribution is\n",
    "Gaussian or any other simple mathematical function. In that case we can\n",
    "use a sample to estimate the PDF of the whole population.\n",
    "\n",
    "For example, in *The Price Is Right* data, we have 313\n",
    "prices for the first showcase. We can think of these values as a sample\n",
    "from the population of all possible showcase prices.\n",
    "\n",
    "This sample includes the following values (in order):\n",
    "\n",
    "$$28800, 28868, 28941, 28957, 28958$$ \n",
    "\n",
    "In the sample, no values appear\n",
    "between 28801 and 28867, but there is no reason to think that these\n",
    "values are impossible. Based on our background information, we expect\n",
    "all values in this range to be equally likely. In other words, we expect\n",
    "the PDF to be fairly smooth.\n",
    "\n",
    "Kernel density estimation (KDE) is an algorithm that takes a sample and\n",
    "finds an appropriately smooth PDF that fits the data. You can read\n",
    "details at <http://en.wikipedia.org/wiki/Kernel_density_estimation>.\n",
    "\n",
    "`scipy` provides an implementation of KDE and\n",
    "`thinkbayes` provides a class called\n",
    "`EstimatedPdf` that uses it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class EstimatedPdf(Pdf):\n",
    "\n",
    "    def __init__(self, sample):\n",
    "        self.kde = scipy.stats.gaussian_kde(sample)\n",
    "\n",
    "    def Density(self, x):\n",
    "        return self.kde.evaluate(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`__init__` takes a sample and computes a kernel density estimate. The\n",
    "result is a `gaussian_kde` object that provides an `evaluate`\n",
    "method.\n",
    "\n",
    "`Density` takes a value, calls `gaussian_kde.evaluate`, and\n",
    "returns the resulting density.\n",
    "\n",
    "Finally, here’s an outline of the code I used to generate\n",
    "Figure [fig.price1]:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Warning: Brewer ran out of colors.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x18db97b2b00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = ReadData(path='../code')\n",
    "cols = zip(*data)\n",
    "price1, price2, bid1, bid2, diff1, diff2 = cols\n",
    "\n",
    "pdf = thinkbayes.EstimatedPdf(price1)\n",
    "low, high = 0, 75000\n",
    "n = 101\n",
    "xs = numpy.linspace(low, high, n) \n",
    "pdf.kde.evaluate([3, 3])\n",
    "\n",
    "pmf = pdf.MakePmf(xs)\n",
    "thinkplot.Pmfs([pmf])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`pdf` is a `Pdf` object, estimated by KDE.\n",
    "`pmf` is a Pmf object that approximates the Pdf by evaluating\n",
    "the density at a sequence of equally spaced values.\n",
    "\n",
    "`linspace` stands for “linear space.” It takes a range,\n",
    "`low` and `high`, and the number of points,\n",
    "`n`, and returns a new `numpy` array with\n",
    "`n` elements equally spaced between `low` and\n",
    "`high`, including both.\n",
    "\n",
    "And now back to *The Price is Right*."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Modeling the contestants\n",
    "\n",
    "The PDFs in Figure [fig.price1] estimate the distribution of possible\n",
    "prices. If you were a contestant on the show, you could use this\n",
    "distribution to quantify your prior belief about the price of each\n",
    "showcase (before you see the prizes).\n",
    "\n",
    "To update these priors, we have to answer these questions:\n",
    "\n",
    "1.  What data should we consider and how should we quantify it?\n",
    "\n",
    "2.  Can we compute a likelihood function; that is, for each hypothetical\n",
    "    value of `price`, can we compute the conditional\n",
    "    likelihood of the data?\n",
    "\n",
    "To answer these questions, I am going to model the contestant as a\n",
    "price-guessing instrument with known error characteristics. In other\n",
    "words, when the contestant sees the prizes, he or she guesses the price\n",
    "of each prize—ideally without taking into consideration the fact that\n",
    "the prize is part of a showcase—and adds up the prices. Let’s call this\n",
    "total `guess`.\n",
    "\n",
    "Under this model, the question we have to answer is, “If the actual\n",
    "price is `price`, what is the likelihood that the\n",
    "contestant’s estimate would be `guess`?”\n",
    "\n",
    "Or if we define\n",
    "\n",
    "```python\n",
    "error = price - guess\n",
    "```\n",
    "then we could ask, “What is the likelihood that the contestant’s\n",
    "estimate is off by `error`?”\n",
    "\n",
    "To answer this question, we can use the historical data again.\n",
    "Figure [fig.price2] shows the cumulative distribution of\n",
    "`diff`, the difference between the contestant’s bid and the\n",
    "actual price of the showcase.\n",
    "\n",
    "The definition of diff is\n",
    "\n",
    "```python\n",
    "diff = price - bid\n",
    "```\n",
    "\n",
    "When `diff` is negative, the bid is too high. As an aside, we\n",
    "can use this distribution to compute the probability that the\n",
    "contestants overbid: the first contestant overbids 25% of the time; the\n",
    "second contestant overbids 29% of the time.\n",
    "\n",
    "We can also see that the bids are biased; that is, they are more likely\n",
    "to be too low than too high. And that makes sense, given the rules of\n",
    "the game.\n",
    "\n",
    "Finally, we can use this distribution to estimate the reliability of the\n",
    "contestants’ guesses. This step is a little tricky because we don’t\n",
    "actually know the contestant’s guesses; we only know what they bid.\n",
    "\n",
    "So we’ll have to make some assumptions. Specifically, I assume that the\n",
    "distribution of `error` is Gaussian with mean 0 and the same\n",
    "variance as `diff`.\n",
    "\n",
    "The `Player` class implements this model:\n",
    "\n",
    "```python\n",
    "class Player(object):\n",
    "\n",
    "    def __init__(self, prices, bids, diffs):\n",
    "        self.pdf_price = thinkbayes.EstimatedPdf(prices)\n",
    "        self.cdf_diff = thinkbayes.MakeCdfFromList(diffs)\n",
    "\n",
    "        mu = 0\n",
    "        sigma = numpy.std(diffs)\n",
    "        self.pdf_error = thinkbayes.GaussianPdf(mu, sigma)\n",
    "```\n",
    "\n",
    "`prices` is a sequence of showcase prices, `bids`\n",
    "is a sequence of bids, and `diffs` is a sequence of diffs,\n",
    "where again `diff = price - bid`.\n",
    "\n",
    "`pdf_price` is the smoothed PDF of prices, estimated by KDE. `cdf_diff`\n",
    "is the cumulative distribution of `diff`, which we saw in\n",
    "Figure [fig.price2]. And `pdf_error` is the PDF that characterizes the\n",
    "distribution of errors; where `error = price - guess`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nPsdZ28bbt2+funXrpp49e+qOO+6wNmaJpjUNSYhPT09Xu3bt1K5dO7377rtat26d4uLiJFXvYNOl\nS5da51xwwQUqKiqyxrhcLp/nPTebqm+My+WSMeacYyoqKnT48OHgvNkwKCkp0eOPP65p06bJZqv+\nJ2RdQ4N1bRqHDx9WZWWl3/fvWR+cVVRUpJiYmHrXy+12y263q3PnznWOCdb3dzSbOXOmrrzySl1z\nzTWSWNvzkZeXp3bt2ql169Z64IEH9MYbb+iyyy5jTc/TSy+9pH379mnBggW1nmNtG+fqq6/WK6+8\nonfffVcvv/yyioqKNGTIEB09ejSq1rRBIf4///M/a10A4P1ht9u1ceNGa/zPf/5z5ebmauPGjbr0\n0ks1YcIElZeXN+SlWpRA11Wq/uvGzTffrO7du+uZZ54J08wjW2PWFUDLM3v2bG3ZskWrV69WTExM\nuKcT9fr06aNPPvlE//znP3X//fdrypQptS4GRGA+++wzzZ07V6tWrbKKdjh/o0eP1oQJE5Samqrr\nr79ef/vb31RZWakVK1aEe2oBadA+8Q8//LDuuuuuesdceOGF1ueeKvwll1yiq666Sh07dtTq1at1\n5513KikpSYcOHap1/rfffqukpCRJUlJSUq0/oXsqdcnJydYYt9vtM8btdismJsbn6/gbExsbq8TE\nxIa89ZAKdF1PnjypMWPGyG63669//atPawbrelag61of1rVpeCoP/t6/Z31wVlJSkowxcrvd1n06\nJN/1SkpKUmVlpY4cOeJTLXK73bruuuusMefz/R3N/zYPP/yw/vKXv2j9+vU+dxBnbRsvNjZWPXv2\nlCT98Ic/1D//+U8tWrRIjz32GGvaSFu3btWRI0d02WWXWccqKyu1ceNGvfjii8rLy2NtgyA+Pl79\n+vXTnj17NHbs2OhZ03N2zZ+n8vJyEx8fb5YtW2aMqb5Q0Gaz+TT6b9682dhsNqvRf+3atbUa/f/8\n5z/7NPqnp6fXulBw4cKFPhcK/sd//Ifp3bu3z3z+5V/+JSovFDx+/LgZOnSoufbaa83JkydrPc+6\nnp/6LmxlXZuGvwtbL730UjN37twwzShyNPTC1vbt25uXXnrJGFP/hVfZ2dnGmOB9f0ebGTNmmOTk\nZFNQUOD3edY2OK6//npz1113GWNY08YqLS01O3fu9PkYNGiQufPOO82uXbuMMaxtMJSVlZnk5GSz\nYMECY0z0rGlQQ/znn39unnnmGbNjxw7z1Vdfmc2bN5ubb77ZdOrUybjdbmvcmDFjzBVXXGG2bt1q\ntmzZYi6//HIzduxY6/nKykpzxRVXmB//+Mfm448/NtnZ2aZbt25m5syZ1pjS0lKTnJxs7rjjDpOX\nl2dWr15t2rdvbxYtWmSN2b9/v2nbtq2ZNWuW2b17t3nppZdM69atzRtvvBHMtx1yx48fN1dffbVJ\nTU01n3/+uSkqKrI+Tp8+bY1jXQNXVFRkcnNzzZ///GcTExNjsrKyTG5urikuLrbGsK5NIyMjw7Ru\n3dq8/PLLZvfu3WbGjBmmXbt25quvvgr31MLixIkTJjc313z88ccmPj7ezJ8/3+Tm5lrr8cwzz5gO\nHTqYzMxM8+mnn5rbb7/ddOvWzWcLtPvvv990797drFu3znz00UdmxIgR5sorr/TZAi0Y39/R5IEH\nHjDt27c3H3zwgc/PUu91Y20D9+ijj5pNmzaZL774wnz66afm0UcfNXa73bz77rvGGNY0mGruTsPa\nBu7f//3fzYYNG8z+/fvNhx9+aG688UaTkJAQdT9fgxriDxw4YMaMGWNcLpdp3bq1ufDCC83Pf/7z\nWtWOkpISc9ddd5mEhASTkJBgpkyZYkpLS2t9rZtvvtm0adPGJCYmmlmzZvkEVmOq908fNmyYcTqd\npmvXrmb+/Pm15rRx40YzcOBA43A4TM+ePa3tgaLJ+vXrjc1m8/mIiYkxNpvNbNiwwRrHugbuiSee\nsNbS+8O76sm6Np309HTTo0cP43A4TFpamsnJyQn3lMJm/fr1fr837733XmvMk08+abp27WqcTqcZ\nPny42blzp8/XOH36tJkxY4ZJTEw0bdq0MWPHjjUHDx70GROs7+9o4W9NbTabefLJJ33GsbaBueee\ne8zFF19sHA6HcblcZuTIkVZF0oM1DY4RI0b4hHhjWNtATZo0yXTr1s20bt3apKSkmAkTJpjdu3f7\njImGNY0xxpiAm4cAAAAAhA2XOgMAAABRhhAPAAAARBlCPAAAABBlCPEAAABAlCHEAwAAAFGGEA8A\nAABEGUI8AAAAEGUI8QAAAECUIcQDAAAAUeb/AX/0TB86WcqNAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x18dba1fa748>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "MakePrice2(player1, player2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Again, we use the variance of `diff` to estimate the variance\n",
    "of `error`. This estimate is not perfect because contestants’\n",
    "bids are sometimes strategic; for example, if Player 2 thinks that\n",
    "Player 1 has overbid, Player 2 might make a very low bid. In that case\n",
    "`diff` does not reflect `error`. If this happens a\n",
    "lot, the observed variance in `diff` might overestimate the\n",
    "variance in `error`. Nevertheless, I think it is a reasonable\n",
    "modeling decision.\n",
    "\n",
    "As an alternative, someone preparing to appear on the show could\n",
    "estimate their own distribution of `error` by watching\n",
    "previous shows and recording their guesses and the actual prices."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Likelihood\n",
    "\n",
    "Now we are ready to write the likelihood function. As usual, I define a\n",
    "new class that extends `thinkbayes.Suite`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class Price(thinkbayes.Suite):\n",
    "\n",
    "    def __init__(self, pmf, player):\n",
    "        thinkbayes.Suite.__init__(self, pmf)\n",
    "        self.player = player\n",
    "        \n",
    "    def Likelihood(self, data, hypo):\n",
    "        price = hypo\n",
    "        guess = data\n",
    "\n",
    "        error = price - guess\n",
    "        like = self.player.ErrorDensity(error)\n",
    "\n",
    "        return like"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`pmf` represents the prior distribution and\n",
    "`player` is a Player object as described in the previous\n",
    "section. In `Likelihood` `hypo` is the hypothetical price of the showcase.\n",
    "`data` is the contestant’s best guess at the price.\n",
    "`error` is the difference, and `like` is the\n",
    "likelihood of the data, given the hypothesis.\n",
    "\n",
    "`ErrorDensity` is defined in `Player`:\n",
    "\n",
    "```python\n",
    "# class Player:\n",
    "\n",
    "    def ErrorDensity(self, error):\n",
    "        return self.pdf_error.Density(error)\n",
    "```\n",
    "\n",
    "`ErrorDensity` works by evaluating `pdf_error` at the given\n",
    "value of `error`. The result is a probability density, so it\n",
    "is not really a probability. But remember that `Likelihood`\n",
    "doesn’t need to compute a probability; it only has to compute something\n",
    "*proportional* to a probability. As long as the constant of\n",
    "proportionality is the same for all likelihoods, it gets canceled out\n",
    "when we normalize the posterior distribution.\n",
    "\n",
    "And therefore, a probability density is a perfectly good likelihood."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Update\n",
    "\n",
    "`Player` provides a method that takes the contestant’s guess\n",
    "and computes the posterior distribution:\n",
    "\n",
    "```python\n",
    "# class Player\n",
    "    def MakeBeliefs(self, guess):\n",
    "        pmf = self.PmfPrice()\n",
    "        self.prior = Price(pmf, self)\n",
    "        self.posterior = self.prior.Copy()\n",
    "        self.posterior.Update(guess)\n",
    "```\n",
    "\n",
    "`PmfPrice` generates a discrete approximation to the PDF of\n",
    "price, which we use to construct the prior.\n",
    "\n",
    "`PmfPrice` uses `MakePmf`, which evaluates\n",
    "`pdf_price` at a sequence of values:\n",
    "\n",
    "```python\n",
    "# class Player\n",
    "    n = 101\n",
    "    price_xs = numpy.linspace(0, 75000, n)\n",
    "\n",
    "    def PmfPrice(self):\n",
    "        return self.pdf_price.MakePmf(self.price_xs)\n",
    "```\n",
    "\n",
    "To construct the posterior, we make a copy of the prior and then invoke\n",
    "`Update`, which invokes `Likelihood` for each\n",
    "hypothesis, multiplies the priors by the likelihoods, and renormalizes.\n",
    "\n",
    "So let’s get back to the original scenario. Suppose you are Player 1 and\n",
    "when you see your showcase, your best guess is that the total price of\n",
    "the prizes is \\$20,000.\n",
    "\n",
    "Figure [fig.price3] shows prior and posterior beliefs about the actual\n",
    "price. The posterior is shifted to the left because your guess is on the\n",
    "low end of the prior range.\n",
    "\n",
    "On one level, this result makes sense. The most likely value in the\n",
    "prior is \\$27,750, your best guess is \\$20,000, and the mean of the\n",
    "posterior is somewhere in between: \\$25,096.\n",
    "\n",
    "On another level, you might find this result bizarre, because it\n",
    "suggests that if you *think* the price is \\$20,000, then\n",
    "you should *believe* the price is \\$24,000.\n",
    "\n",
    "To resolve this apparent paradox, remember that you are combining two\n",
    "sources of information, historical data about past showcases and guesses\n",
    "about the prizes you see.\n",
    "\n",
    "We are treating the historical data as the prior and updating it based\n",
    "on your guesses, but we could equivalently use your guess as a prior and\n",
    "update it based on historical data.\n",
    "\n",
    "If you think of it that way, maybe it is less surprising that the most\n",
    "likely value in the posterior is not your original guess."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Optimal bidding\n",
    "\n",
    "Now that we have a posterior distribution, we can use it to compute the\n",
    "optimal bid, which I define as the bid that maximizes expected return\n",
    "(see <http://en.wikipedia.org/wiki/Expected_return>).\n",
    "\n",
    "I’m going to present the methods in this section top-down, which means I\n",
    "will show you how they are used before I show you how they work. If you\n",
    "see an unfamiliar method, don’t worry; the definition will be along\n",
    "shortly.\n",
    "\n",
    "To compute optimal bids, I wrote a class called\n",
    "`GainCalculator`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class GainCalculator(object):\n",
    "\n",
    "    def __init__(self, player, opponent):\n",
    "        self.player = player\n",
    "        self.opponent = opponent\n",
    "        \n",
    "    def ExpectedGains(self, low=0, high=75000, n=101):\n",
    "        bids = numpy.linspace(low, high, n)\n",
    "\n",
    "        gains = [self.ExpectedGain(bid) for bid in bids]\n",
    "\n",
    "        return bids, gains       \n",
    "\n",
    "    def ExpectedGain(self, bid):\n",
    "        suite = self.player.posterior\n",
    "        total = 0\n",
    "        for price, prob in sorted(suite.Items()):\n",
    "            gain = self.Gain(bid, price)\n",
    "            total += prob * gain\n",
    "        return total\n",
    "    \n",
    "    def Gain(self, bid, price):\n",
    "        # if you overbid, you get nothing\n",
    "        if bid > price:\n",
    "            return 0\n",
    "\n",
    "        # otherwise compute the probability of winning\n",
    "        diff = price - bid\n",
    "        prob = self.ProbWin(diff)\n",
    "\n",
    "        # if you are within 250 dollars, you win both showcases\n",
    "        if diff <= 250:\n",
    "            return 2 * price * prob\n",
    "        else:\n",
    "            return price * prob\n",
    "        \n",
    "    def ProbWin(self, diff):\n",
    "        prob = (self.opponent.ProbOverbid() +\n",
    "                self.opponent.ProbWorseThan(diff))\n",
    "        return prob"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`player` and `opponent` are `Player`\n",
    "objects.\n",
    "\n",
    "`GainCalculator` provides `ExpectedGains`, which\n",
    "computes a sequence of bids and the expected gain for each bid:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`low` and `high` specify the range of possible\n",
    "bids; `n` is the number of bids to try.\n",
    "\n",
    "`ExpectedGains` calls `ExpectedGain`, which\n",
    "computes expected gain for a given bid:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`ExpectedGain` loops through the values in the posterior and\n",
    "computes the gain for each bid, given the actual prices of the showcase.\n",
    "It weights each gain with the corresponding probability and returns the\n",
    "total.\n",
    "\n",
    "`ExpectedGain` invokes `Gain`, which takes a bid\n",
    "and an actual price and returns the expected gain."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Warning: Brewer ran out of colors.\n",
      "Player 1 optimal bid (16668.781463564381, 21000.0)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x18dba1fadd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "player1.MakeBeliefs(20000)\n",
    "player2.MakeBeliefs(40000)\n",
    "    \n",
    "calc1 = GainCalculator(player1, player2)\n",
    "calc2 = GainCalculator(player2, player1)\n",
    "\n",
    "bids, gains = calc1.ExpectedGains()\n",
    "thinkplot.Plot(bids, gains, label='Player 1')\n",
    "print('Player 1 optimal bid', max(zip(gains, bids)))\n",
    "\n",
    "bids, gains = calc2.ExpectedGains()\n",
    "thinkplot.Plot(bids, gains, label='Player 2')\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Figure 6.4: Expected gain versus bid in a scenario where Player 1’s best guess is\n",
    "\\$20,000 and Player 2’s best guess is \\$40,000."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you overbid, you get nothing. Otherwise we compute the difference\n",
    "between your bid and the price, which determines your probability of\n",
    "winning.\n",
    "\n",
    "If `diff` is less than \\$250, you win both showcases. For\n",
    "simplicity, I assume that both showcases have the same price. Since this\n",
    "outcome is rare, it doesn’t make much difference.\n",
    "\n",
    "Finally, we have to compute the probability of winning based on\n",
    "`diff`:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```python\n",
    "def ProbWin(self, diff):\n",
    "    prob = (self.opponent.ProbOverbid() + \n",
    "            self.opponent.ProbWorseThan(diff))\n",
    "    return prob\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If your opponent overbids, you win. Otherwise, you have to hope that\n",
    "your opponent is off by more than `diff`. `Player`\n",
    "provides methods to compute both probabilities:\n",
    "\n",
    "```python\n",
    "# class Player:\n",
    "    def ProbOverbid(self):\n",
    "        return self.cdf_diff.Prob(-1)\n",
    "\n",
    "    def ProbWorseThan(self, diff):\n",
    "        return 1 - self.cdf_diff.Prob(diff)\n",
    "```\n",
    "\n",
    "This code might be confusing because the computation is now from the\n",
    "point of view of the opponent, who is computing, “What is the\n",
    "probability that I overbid?” and “What is the probability that my bid is\n",
    "off by more than `diff`?”\n",
    "\n",
    "Both answers are based on the CDF of `diff`. If the\n",
    "opponent’s `diff` is less than or equal to -1, you win. If\n",
    "the opponent’s `diff` is worse than yours, you win. Otherwise\n",
    "you lose.\n",
    "\n",
    "Finally, here’s the code that computes optimal bids:\n",
    "\n",
    "```python\n",
    "# class Player:\n",
    "    def OptimalBid(self, guess, opponent):\n",
    "        self.MakeBeliefs(guess)\n",
    "        calc = GainCalculator(self, opponent)\n",
    "        bids, gains = calc.ExpectedGains()\n",
    "        gain, bid = max(zip(gains, bids))\n",
    "        return bid, gain\n",
    "```\n",
    "\n",
    "Given a guess and an opponent, `OptimalBid` computes the\n",
    "posterior distribution, instantiates a `GainCalculator`,\n",
    "computes expected gains for a range of bids and returns the optimal bid\n",
    "and expected gain. Whew!\n",
    "\n",
    "Figure [fig.price5] shows the results for both players, based on a\n",
    "scenario where Player 1’s best guess is \\$20,000 and Player 2’s best\n",
    "guess is \\$40,000.\n",
    "\n",
    "For Player 1 the optimal bid is \\$21,000, yielding an expected return of\n",
    "almost \\$16,700. This is a case (which turns out to be unusual) where\n",
    "the optimal bid is actually higher than the contestant’s best guess.\n",
    "\n",
    "For Player 2 the optimal bid is \\$31,500, yielding an expected return of\n",
    "almost \\$19,400. This is the more typical case where the optimal bid is\n",
    "less than the best guess."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Discussion\n",
    "\n",
    "One of the features of Bayesian estimation is that the result comes in\n",
    "the form of a posterior distribution. Classical estimation usually\n",
    "generates a single point estimate or a confidence interval, which is\n",
    "sufficient if estimation is the last step in the process, but if you\n",
    "want to use an estimate as an input to a subsequent analysis, point\n",
    "estimates and intervals are often not much help.\n",
    "\n",
    "In this example, we use the posterior distribution to compute an optimal\n",
    "bid. The return on a given bid is asymmetric and discontinuous (if you\n",
    "overbid, you lose), so it would be hard to solve this problem\n",
    "analytically. But it is relatively simple to do computationally.\n",
    "\n",
    "Newcomers to Bayesian thinking are often tempted to summarize the\n",
    "posterior distribution by computing the mean or the maximum likelihood\n",
    "estimate. These summaries can be useful, but if that’s all you need,\n",
    "then you probably don’t need Bayesian methods in the first place.\n",
    "\n",
    "Bayesian methods are most useful when you can carry the posterior\n",
    "distribution into the next step of the analysis to perform some kind of\n",
    "decision analysis, as we did in this chapter, or some kind of\n",
    "prediction, as we see in the next chapter."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
